package pe.com.casadesign.service.impl;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

import pe.com.casadesign.dao.ProveedorDAO;
import pe.com.casadesign.domain.ListaProveedor;
import pe.com.casadesign.domain.OperacionResultado;
import pe.com.casadesign.domain.Proveedor;
import pe.com.casadesign.service.ProveedorService;
import pe.com.casadesign.service.util.Constantes;

/**
 * Implementacion de ProveedorService.
 * 
 * @author Pedro Vera
 * 
 */
@Service
public class ProveedorServiceImpl implements ProveedorService {
	private static final Logger logger = LoggerFactory.getLogger(ProveedorServiceImpl.class);

    @Autowired
    private ProveedorDAO proveedorDAO;
    
	@Override
	public ListaProveedor listarProveedor(Proveedor proveedor) {
		return proveedorDAO.listarProveedor(proveedor);
	}

	@Override
	public Proveedor obtenerProveedor(Proveedor proveedor) {
		return proveedorDAO.obtenerProveedor(proveedor);
	}
	
	@Override
	public Proveedor obtenerProveedorPorIdentificacion(Proveedor proveedor) {
		return proveedorDAO.obtenerProveedorPorIdentificacion(proveedor);
	}

	@Override
	@Transactional (propagation=Propagation.REQUIRED, rollbackFor=Exception.class)
	public OperacionResultado registrarProveedor(Proveedor proveedor) {
		boolean resultado = proveedorDAO.registrarProveedor(proveedor);
		
		OperacionResultado operacionResultado = new OperacionResultado();
		operacionResultado.setEsOK(resultado?Constantes.SI:Constantes.NO);
		
		return operacionResultado;
	}

	@Override
	@Transactional (propagation=Propagation.REQUIRED, rollbackFor=Exception.class)
	public OperacionResultado modificarProveedor(Proveedor proveedor) {
		boolean resultado = proveedorDAO.modificarProveedor(proveedor);
		
		OperacionResultado operacionResultado = new OperacionResultado();
		operacionResultado.setEsOK(resultado?Constantes.SI:Constantes.NO);
		
		return operacionResultado;
	}

	@Override
	public OperacionResultado eliminarProveedor(Proveedor proveedor) {
		boolean resultado = proveedorDAO.eliminarProveedor(proveedor);
		
		OperacionResultado operacionResultado = new OperacionResultado();
		operacionResultado.setEsOK(resultado?Constantes.SI:Constantes.NO);
		
		return operacionResultado;
	}

}
